<?php 
namespace Admin\Controller;
use Common\Model\Article;
use Common\Model\Category;
use Common\Model\ArcTag;
/**
 * 文章管理器
 */
  
 class ArticleController extends CommonController{
// 		定义成员属性
 		private $cateModel;
		private $db;
//		构造函数
		public function __init(){
//			echo 1;die;
			$this->db=new Article;
			$this->cateModel=new Category;
//			继承父级构造函数init
			parent::__init();
//					echo 1;die;

		}
		  /**
 			* 文章列表首页
 			*/
  		public function index(){
 //			echo 1;die;
//			分页-----------------------
//			获取总条数			is_recycle=0 不在回收站    1在回收站
			$allNum=$this->db->where('is_recycle',0)->count();
//			分页结构
//			limit(3,2)
//			配置分页数据
//			row是每一页几条，make传入总共几条
//			Page框架定义好的方法
			$page=Page::row(2)->make($allNum);
//			$c=Page::limit();  string '0,2' (length=3)
//			关联，join文章表和分类表,field制定获取的字段,排序sendtime以时间降序，limit分页截取的方法，不在回收站的数据，获取所有	category分类表
//			field获取想要的字段	limit分页
 			$data=$this->db->join('category','category_cid','=','cid')->field('aid','title','sendtime','cname')->orderBy('sendtime','DESC')->limit(Page::limit())->where('is_recycle',0)->get();
//			分配page分页累
			View::with('page',$page);
//			分配数据
			View::with('data',$data); 			
			
			View::make();
  		}
  
		 /**
		  * 添加
		  */
		  public function add(){
//		  	判断传输方式的是不是post
		  	if(IS_POST){
//		  		echo 1;die;
//				调用成员属性article里存储的句柄访问Article里面的store方法
		  		$result=$this->db->store();
				if(!$result){
//					返回错误信息
					View::error($this->db->getError());
				}else{
//					反出成功
					View::success('添加成功');
				}
		  	}
			
//			添加到那个分类
			$cateData=$this->cateModel->get();

//			转成树形
			$cateData=Data::tree($cateData,'cname');
//			分配数据
			View::with('cateData',$cateData);
				//echo 1;die;
//			获取标签
//			获取标签表所有数据
			$tagData=Db::table('tag')->get();
//			分配数据
			View::with('tagData',$tagData);
//			引入模版
			View::make();
			
			
			
		  }
		 
		 /**
		  * 编辑
		  */
		 public function edit(){
		 	if(IS_POST){
		 		$result=$this->db->edit();
				if(!$result){
					View::error($this->db->getError());
				}else{
					View::success('编辑成功');
				}
		 	}
			
//			获取get参数
			$aid=Q('get.aid',0,'intval');
//			获取分类表所有
			$cateData=$this->cateModel->get();
//			将分类表cname字段转成树形
			$cateData=Data::tree($cateData,'cname');
//			进行分配数据
			View::with('cateData',$cateData);

//			获取标签
//			获取标签表里所有数据
			$tagData=Db::table('tag')->get();
//			echo 1;die;
//			分配数据
			View::with('tagData',$tagData);

//			获取原数据
//			关联文章表和文章内容表
//			select * from arc a join arcticle_data arc on a.aid=arc.aid			
			$oldData=$this->db->join('article_data','aid','=','article_aid')->where('aid',$aid)->find();
//			分配数据
			View::with('oldData',$oldData);

//			获取文章对应的所有信息返回
//			实例化
			$arcTagModel=new ArcTag;

//			获取指定的字段
			$tags=$arcTagModel->where('article_aid',$aid)->lists('tag_tid');

//			分配数据
			View::with('tags',$tags);
//			引入模版
			View::make();
			
		 }
	/**
	 * 回收站
	 */
	public function recycle(){
//		分页-----------------------
//		获取总条数
		$allNum=$this->db->where('is_recycle',1)->count();
//		分页结构
//		limit(3,2)
//		配置分页数据
//		row是每一页几条，make传入总共几条
		$page=Page::row(2)->make($allNum);
//		$c=Page::limit();  string '0,2' (length=3)
//		关联，join文章表和分类表,field制定获取的字段,排序sendtime以时间降序，limit分页截取的方法，不在回收站的数据，获取所有
//		field获取想要的字段	limit分页
		$data=$this->db->join('category','category_cid','=','cid')->field('aid','title','sendtime','cname')->orderBy('sendtime','DESC')->limit(Page::limit())->where('is_recycle',1)->get();
//		分配page分页累
		View::with('page',$page);
//		------------------------------
//		分配所有数据
		View::with('data',$data);
//		引入模版
		View::make();
	}			 
		 /**
		  * 删除到回收站
		  */
		 public function delToRecycle(){
//		 	获取get参数
		 	$aid=Q('get.aid',0,'intval');
//		将回收站对应字段更改为1	update更新指定的字段。是1就在回收站
			$result=$this->db->where('aid',$aid)->update(array('is_recycle'=>1));
			if(!$result){
				View::error('删除失败');
			}else{
				View::success('成功删除到回收站');
			}
		 }
//	彻底删除
	public function delToRecycles(){
//		获取get参数
		$aid=Q('get.aid',0,'intval');
//		删除掉中间表中对应主键的所有数据
		$a=Db::table('article_tag')->where('article_aid',$aid)->delete();
//		删除内容表对应主键的所有数据
		$b=Db::table('article_data')->where('article_aid',$aid)->delete();
//		删除文章表对应主键的所有数据
		$c=Db::table('article')->where('aid',$aid)->delete();
		if($a||$b||$c){
			View::success('以删除');
			return TRUE;
		}
		return FALSE;
	}
//	恢复
	public function recover(){
//		获取get参数
		$aid=Q('get.aid',0,'intval');
//		将回收站对应字段更改为0
		$result=$this->db->where('aid',$aid)->update(array('is_recycle'=>0));
		if(!$result){
			View::error($this->db->getError());
		}else{
			View::success('恢复成功');
		}
	}		 
		 
		 
		 
		 
		 
	
 }
 